<template>
  <div class="article-detail-page">
    <nav class="nav">
      <span class="back" @click="$router.go(-1)">&lt;</span> 面经详情
    </nav>
    <header class="header">
      <h1>{{ result.stem }}</h1>
      <p>2022-01-20 | 315 浏览量 | 44 点赞数</p>
      <p>
        <img
          src="http://teachoss.itheima.net/heimaQuestionMiniapp/%E5%AE%98%E6%96%B9%E9%BB%98%E8%AE%A4%E5%A4%B4%E5%83%8F%402x.png"
          alt=""
        />
        <span>靑春少年</span>
      </p>
    </header>
    <main class="body">
      {{ result.content }}
    </main>
  </div>
</template>

<script>
// 只有data中的数据才是响应式的,才能在视图中使用
export default {
  name: "ArticleDetailPage",
  // 这是一个生命周期钩子函数 特点自动执行 类似window.onload
  // created只会在第一次进入的时候才会执行,后面就不会执行了,因为当前这个组件被keep-alive缓存下来了
  // keep 保持
  // alive 活着的
  // 只要组件加了keep-alive,它就不会被销毁 只会失效但是没有被销毁 永生
  // 8个 beforeCreate created beforeMount mounted beforeUpdate updated beforeDestry destroyed
  // activated 激活 deactivated 未激活 失活 失效
  async activated() {
    console.log(this.$route.params.id);
    const id = this.$route.params.id;
    const {
      data: { result },
    } = await this.$ajax(`/mock/3083/articles/${id}`);
    this.result = result; //数据在哪里看
  },
  // 我们普通的组件如果想发送ajax我们在created中写,我们想清理定时器,我们在beforeDestroy中写
  // 但是被缓存过的组件就不行 因为被缓存过的组件created只有第一次进入才会执行,并且由于它不会被销毁,所以beforeDestroy
  // 不会执行
  // 所以解决办法:我们把ajax写在activated 我们把清理定时器写在deactivated
  // activated() {
  //   console.log("激活");
  // },
  deactivated() {
    this.result = {};
    console.log("失活");
  },
  beforeDestroy() {
    console.log(12345465);
  },
  data() {
    return {
      result: {},
    };
  },
};
</script>

<style lang="less" scoped>
.article-detail-page {
  .nav {
    height: 44px;
    border-bottom: 1px solid #e4e4e4;
    line-height: 44px;
    text-align: center;
    .back {
      font-size: 18px;
      color: #666;
      position: absolute;
      left: 10px;
      top: 0;
      transform: scale(1, 1.5);
    }
  }
  .header {
    padding: 0 15px;
    p {
      color: #999;
      font-size: 12px;
      display: flex;
      align-items: center;
    }
    img {
      width: 40px;
      height: 40px;
      border-radius: 50%;
      overflow: hidden;
    }
  }
  .body {
    padding: 0 15px;
  }
}
</style>
